package presentation;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import dao.EmpleadoDAO;
import model.Empleado;
import services.ValidacionesServicio;

/**
 * Servlet implementation class AgregarEmpleadoServlet
 */
@WebServlet("/AgregarEmpleadoServlet")
public class AgregarEmpleadoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public EmpleadoDAO empleadoService = null;
	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AgregarEmpleadoServlet() {
		super();
	
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.getSession().setAttribute("MensajeAgregarEmpleado", null);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {		
	//	doGet(request, response);

			
		String mensaje = null;

		
		boolean valido = true;
		try{
			Integer inputDNI = Integer.parseInt(request.getParameter("inputDNI"));
			
			if (request.getParameter("inputNombre").equals(null)) valido = false;
			if (request.getParameter("inputApellido").equals(null)) valido = false;
			if (request.getParameter("inputUsuario").equals(null)) valido = false;
			if (request.getParameter("inputPassword").equals(null)) valido = false;
			if (request.getParameter("inputCategoria").equals(null)) valido = false;
			
			if (!ValidacionesServicio.validarUsuario(this.empleadoService.getAll(), request.getParameter("inputUsuario"),inputDNI)) {
				valido = false;
				mensaje =  "Usuario ya registrado, elegir otro usuario.";				
			}
		}
		catch (Exception e){
			System.out.println(e.getMessage());
			valido = false;
			mensaje =  "Complete los campos correctamente por favor...";		
		}
		
		if (valido){
		
			Empleado emp = new Empleado(Integer.parseInt(request.getParameter("inputDNI")),
					request.getParameter("inputNombre"), request.getParameter("inputApellido"),
					request.getParameter("inputCategoria"),request.getParameter("inputUsuario"),request.getParameter("inputPassword"));
			this.empleadoService.save(emp);
			mensaje =  "Usuario agregado!";		

		}
		
		
		request.getSession().setAttribute("MensajeAgregarEmpleado", mensaje);

		response.sendRedirect("agregarEmpleado.jsp");
	}
	@Override
	public void init(ServletConfig config) {
		WebApplicationContext context = WebApplicationContextUtils
				.getRequiredWebApplicationContext(config.getServletContext());
		this.empleadoService = (EmpleadoDAO) context.getBean(EmpleadoDAO.class);
	}
}
